home *** CD-ROM | disk | FTP | other *** search
- 100 CLS:PRINT "RANDNORM.BAS - to calculate 1000 random normal variables"
- 110 PRINT " mean = 0 variance = 1 and check them"
- 120 PRINT STRING$(80,"-")
- 130 '
- 140 OPTION BASE 1
- 150 DEFINT I: DEFSNG R,S,V,X
- 160 DIM RN(1000)
- 170 RANDOMIZE: PRINT
- 175 COLOR 27,0: LOCATE 20,25:PRINT "Please wait... calculating"
- 180 FOR I=1 TO 999 STEP 2
- 190 V1 = (2!*RND(1))-1!
- 200 V2 = (2!*RND(1))-1!
- 210 S = (V1*V1) + (V2*V2)
- 220 IF S > 1! THEN 190
- 230 X1 = V1 * SQR(-2!*LOG(S)/S)
- 240 X2 = V2 * SQR(-2!*LOG(S)/S)
- 250 ' x1 and x2 are random normals
- 260 RN(I) = X1: RN(I+1) = X2
- 270 ' PRINT USING "####";I;
- 280 NEXT I
- 290 '
- 295 LOCATE 20,25: COLOR 7,0: PRINT SPC(50)
- 300 PRINT:PRINT " 1000 variables calculated !!!"
- 310 '
- 320 REM check mean and variance
- 325 LOCATE 20,25: COLOR 27,0: PRINT "Please be patient... thinking...."
- 330 '
- 340 SUM = 0!: SUMSQ = 0!: RMAX = 0!: RMIN = 1E+10
- 350 FOR I=1 TO 1000
- 360 SUM = SUM + RN(I)
- 370 IF RN(I) > RMAX THEN RMAX = RN(I)
- 380 IF RN(I) < RMIN THEN RMIN = RN(I)
- 390 SQ = RN(I)*RN(I)
- 400 SUMSQ = SUMSQ + SQ
- 410 ' PRINT USING "####";I;
- 420 NEXT I
- 425 LOCATE 20,25: COLOR 7,0: PRINT SPC(50)
- 430 '
- 440 REM output results
- 450 '
- 460 RMEAN = SUM/1000
- 470 PRINT:PRINT:PRINT "Mean = ";: PRINT USING "#.####";RMEAN
- 480 VAR = (SUMSQ - (SUM*SUM/1000))/999
- 490 PRINT "Variance = ";VAR
- 500 END
- NT:PRINT "Mean = "